/*#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char a[10010] ;
typedef struct stack
{
	char s[10010];
	int top;
};
int main()
{
	while (gets(a)!=EOF)
	{
		
		struct stack m;
		memset(m.s, 0, sizeof(m.s));
		m.top = 0;
		int len = strlen(a), n, i;
		/*if (len % 2 == 0)
			n = len / 2;
		else
			n = len / 2 - 1;
		for (i = 0; i <= len/2-1; i++)
			m.s[m.top++] = a[i];
		m.top--;
		if (len % 2 == 1)
			i= len / 2+1;
		else
			i = len / 2 ;
		int flag = 1;
		for (i ; i < len; i++)
		{
			if (m.s[m.top--] != a[i])
			{
				flag = 0;
				printf("NO\n");
				break;
			}
		}
		if(flag)
			printf("Yes\n");

	}
	return 0;
}*/
#include<stdio.h>
#include<string.h>
#include<math.h>
//#include<algorithm>
typedef long long LL;
const int MAXN = 100010;
char s[MAXN];
int main()
{
	int T, len;
	while(scanf("%s",s)!=EOF)
	{
		len = strlen(s);
		int ans = 1;
		for(int i = 0, j = len - 1; i < j; i++, j--)
		{
			if(s[i] != s[j])
			{
				ans = 0;
				break;
			}
		}
		if(ans)
			puts("Yes");
		else 
			puts("NO");
	}
	return 0;
}
